<?php
/**
 * 发仔<i@fazi.me> 2018-07-09
 */

namespace app\open\controller;
/**
 * Class System
 * @name【7 系统相关】
 * @package app\open\controller
 */
use app\open\model;#调用MODEL
use app\open\validate;#验证
use app\base\exception\ParamException;
class System extends Base
{
    /**
     * 继承
     */
    public function _initialize()
    {
        parent::_initialize();
    }

    /**
     * @name【1.1 系统配置参数列表】
     * @desc【读取系统配置列表】
     * @method【get】
     * @grop【setting】
     * @param【_list】
     * @return【
     * 】
     * @table【p_setting】
     */
    public function getSetting()
    {
        $data = [];
        //调用集成
        $data['count'] = $this->getCountCommon(new model\Setting());
        $data['list'] = $data['count'] ? $this->getListOrAll(new model\Setting()) : [];
        return $this->res($data);
    }
    /**
     * @name【1.2 新增系统配置参数 】
     * @desc【无】
     * @method【post】
     * @grop【setting】
     * @table【setting】
     * @except【PK】
     * @param【】
     * @return【】
     */
    public function addSetting()
    {
        $id = $this->addCommon(new model\Setting(),new validate\SettingValidate());
        return $this->res($id);
    }
    /**
     * @name【1.3 编辑系统配置参数 】
     * @desc【无】
     * @method【post】
     * @grop【setting】
     * @except【key】
     * @return【】
     * @table【p_setting】
     * @author 【发仔<i@fazi.me>】
     */
    public function editSetting()
    {
        //1.参数传入和验证
        $data = $this->editCommon(new model\Setting(),new validate\SettingValidate());
        //3.结果
        return $this->res($data);
    }
    /**
     * @name【1.3 删除系统配置参数 】
     * @desc【无】
     * @method【post】
     * @grop【setting】
     * @param 【_delete】
     * @return【】
     * @table【p_setting】
     * @author 【发仔<i@fazi.me>】
     */
    public function deleteSetting()
    {
        //1.参数传入和验证
        $data = $this->deleteCommon(new model\Setting());
        //3.结果
        return $this->res($data);
    }

    /**
     * @name【2.1 系统菜单】
     * @desc【菜单树形/所有列表】
     * @method【post】
     * @table【p_menu】
     * @group【menu】
     * @param【
     * module_type $ int $ 0 $ 所属模块类型，0:传统模块,1:api模块  #
     * where_json $ json $  $ 查询条件 #
     * is_tree $ int $ 1$ 是否返回树状，0: 否,1: 是  #
     * 】
     * @return【】
     * @throws \think\db\exception\DataNotFoundException
     * @throws \think\db\exception\ModelNotFoundException
     * @throws \think\exception\DbException
     */
    public function getMenu()
    {
        //数据
        $list = $this->getListOrAll(new model\Menu());
        $data = input('param.is_tree') ? Arr2Tree($list) : $list;
        //遍历ACTION
        foreach ($data AS $key=>$value) {
            $action = json_decode($value['action']);

        }

        return $this->res($data);
    }

    /**
     * @name【2.2 添加菜单】
     * @desc【】
     * @method【post】
     * @table【p_menu】
     * @group【menu】
     * @except【PK】
     * @param【】
     * @return【】
     */
    public function addMenu()
    {
        // 校验请求参数
        $rslt = $this->addCommon( new model\Menu(), new validate\MenuValidate());
        //数据
        return $this->res($rslt);
    }
    /**
     * @name【2.3 编辑菜单】
     * @desc【】
     * @method【post】
     * @table【p_menu】
     * @group【menu】
     * @param【】
     * @return【】
     */
    public function editMenu()
    {
        // 校验请求参数
        $rslt = $this->editCommon( new model\Menu(), new validate\MenuValidate());
        //数据
        return $this->res($rslt);
    }
    /**
     * @name【2.4 删除菜单】
     * @desc【】
     * @method【post】
     * @table【menu】
     * @group【menu】
     * @param【_delete】
     * @return【】
     */
    public function deleteMenu()
    {
        // 校验请求参数
        $rslt = $this->deleteCommon( new model\Menu() );
        //数据
        return $this->res($rslt);
    }

    /**
     * @name【3.1 区域列表所有】
     * @desc【所有区域数据】
     * @method【post】
     * @table【p_area】
     * @group【area】
     * @param【_list】
     * @return【
     * code $ int $ number|1-1 $ 标识1-成功 0-失败#
     * msg $ string $  $ code=0，错误信息#
     * data $ json $ $ 数据 #
     * description $ json $ $ 接口说明
     * 】
     * @throws \think\db\exception\DataNotFoundException
     * @throws \think\db\exception\ModelNotFoundException
     * @throws \think\exception\DbException
     */
    public function getArea()
    {
        $data = [];
        //调用集成
        $data['count'] = $this->getCountCommon(new model\Area());
        $data['list'] = $data['count'] ? $this->getListOrAll(new model\Area()) : [];
        //数据
        $data = input('param.is_all') ? Arr2Tree($data['list'],0,'area_id','area_pid') : $data;

        return $this->res($data);
    }

    /**
     * @name【3.2 区域添加】
     * @desc【添加区域数据】
     * @method【post】
     * @table【area】
     * @group【area】
     * @param【】
     * @except【PK】
     * @return【
     * code $ int $ number|1-1 $ 标识1-成功 0-失败#
     * msg $ string $  $ code=0，错误信息#
     * data $ json $ $ 数据 #
     * description $ json $ $ 接口说明
     * 】
     * @throws \think\db\exception\DataNotFoundException
     * @throws \think\db\exception\ModelNotFoundException
     * @throws \think\exception\DbException
     */
    public function addArea()
    {
        // 调用集成
        $rslt = $this->addCommon(new model\Area(), new validate\AreaValidate());

        return $this->res($rslt);
    }

    /**
     * @name【3.3 编辑区域】
     * @desc【无】
     * @method【post】
     * @table【area】
     * @group【area】
     * @param【】
     * @return【
     * code $ int $ number|1-1 $ 标识1-成功 0-失败#
     * msg $ string $  $ code=0，错误信息#
     * data $ json $ $ 菜单树形/对象结构 #
     * description $ json $ $ 接口说明
     * 】
     * @throws \think\db\exception\DataNotFoundException
     * @throws \think\db\exception\ModelNotFoundException
     * @throws \think\exception\DbException
     */
    public function editArea()
    {
        // 调用集成
        $rslt = $this->editCommon(new model\Area(), new validate\AreaValidate());

        //3.结果
        return $this->res($rslt);
    }

    /**
     * @name【3.4 删除区域】
     * @desc【无】
     * @method【post】
     * @table【area】
     * @group【area】
     * @param【_delete】
     * @return【
     * code $ int $ number|1-1 $ 标识1-成功 0-失败#
     * msg $ string $  $ code=0，错误信息#
     * data $ json $ $ 菜单树形/对象结构 #
     * description $ json $ $ 接口说明
     * 】
     * @throws \think\db\exception\DataNotFoundException
     * @throws \think\db\exception\ModelNotFoundException
     * @throws \think\exception\DbException
     */
    public function deleteArea()
    {
        // 调用集成
        $rslt = $this->deleteCommon(new model\Area());
        //3.结果
        return $this->res($rslt);
    }
    /**
     * @name【4.1 角色列表所有】
     * @desc【所有角色数据】
     * @method【post】
     * @table【p_role】
     * @group【role】
     * @param【_list】
     * @return【
     * code $ int $ number|1-1 $ 标识1-成功 0-失败#
     * msg $ string $  $ code=0，错误信息#
     * data $ json $ $ 数据 #
     * description $ json $ $ 接口说明
     * 】
     * @throws \think\db\exception\DataNotFoundException
     * @throws \think\db\exception\ModelNotFoundException
     * @throws \think\exception\DbException
     */
    public function getRole()
    {
        $data = [];
        //调用集成
        $data['count'] = $this->getCountCommon(new model\Role());
        $data['list'] = $data['count'] ? $this->getListOrAll(new model\Role()) : [];
        //数据
        $data = input('param.is_all') ? Arr2Tree($data['list'],0,'role_id','role_pid') : $data;

        return $this->res($data);
    }

    /**
     * @name【4.2 角色添加】
     * @desc【添加角色数据】
     * @method【post】
     * @table【role】
     * @group【role】
     * @param【】
     * @except【PK】
     * @return【】
     */
    public function addRole()
    {
        // 集成
        $rslt = $this->addCommon(new model\Role(), new validate\RoleValidate());

        return $this->res($rslt);
    }

    /**
     * @name【4.3 编辑角色】
     * @desc【无】
     * @method【post】
     * @table【role】
     * @group【role】
     * @param【】
     * @return【
     * code $ int $ number|1-1 $ 标识1-成功 0-失败#
     * msg $ string $  $ code=0，错误信息#
     * data $ json $ $ 菜单树形/对象结构 #
     * description $ json $ $ 接口说明
     * 】
     */
    public function editRole()
    {
        // 集成
        $rslt = $this->editCommon(new model\Role(), new validate\RoleValidate());

        //4.结果
        return $this->res($rslt);
    }

    /**
     * @name【4.4 删除角色】
     * @desc【无】
     * @method【post】
     * @table【role】
     * @group【role】
     * @param【_delete】
     * @return【】
     */
    public function deleteRole()
    {
        // 集成
        $rslt = $this->deleteCommon(new model\Role(), new validate\RoleValidate());
        //4.结果
        return $this->res($rslt);
    }
    /**
     * @name【5.1 用户（账号）列表所有】
     * @desc【所有用户（账号）数据】
     * @method【post】
     * @table【p_user】
     * @group【user】
     * @param【_list】
     * @return【】
     */
    public function getUser()
    {
        $data = [];
        //调用集成
        $joins = ['area','company'];
        $data['count'] = $this->getCountCommon(new model\User(),$joins);
        $data['list'] = $data['count'] ? $this->getListOrAll(new model\User(),$joins) : [];

        return $this->res($data);
    }

    /**
     * @name【5.2 用户（账号）添加】
     * @desc【添加用户（账号）数据】
     * @method【post】
     * @table【user】
     * @group【user】
     * @except【PK,salt,withdraw_pwd,is_set_pwd】
     * @param【】
     * @except【PK】
     * @return【】
     */
    public function addUser()
    {
        // 调用集成
        $rslt = $this->addCommon(new model\User(),new validate\UserValidate());

        return $this->res($rslt);
    }

    /**
     * @name【5.3 编辑用户（账号）】
     * @desc【无】
     * @method【post】
     * @table【user】
     * @group【user】
     * @except【salt,withdraw_pwd,is_set_pwd】
     * @param【】
     * @return【
     * code $ int $ number|1-1 $ 标识1-成功 0-失败#
     * msg $ string $  $ code=0，错误信息#
     * data $ json $ $ 菜单树形/对象结构 #
     * description $ json $ $ 接口说明
     * 】
     */
    public function editUser()
    {
        // 调用集成
        $rslt = $this->editCommon(new model\User(),new validate\UserValidate());

        //5.结果
        return $this->res($rslt);
    }

    /**
     * @name【5.4 删除用户（账号）】
     * @desc【无】
     * @method【post】
     * @table【user】
     * @group【user】
     * @param【_delete】
     * @return【】
     * @throws
     */
    public function deleteUser()
    {
        //1.参数传入和验证
        // 集成
        $rslt = $this->addCommon(new model\User(), new validate\UserValidate());
        //5.结果
        return $this->res($rslt);
    }
}